// 图标管理模块

import { showToast } from './utils.js';

// 添加图标
export function addIcon(data, currentTab, iconData) {
    if (!Array.isArray(data.icons[currentTab])) {
        data.icons[currentTab] = [];
    }
    
    // 为图标生成并添加背景色
    if (!iconData.bgGradient) {
        const gradients = [
            'linear-gradient(135deg, #6366f1, #8b5cf6)', // 紫色
            'linear-gradient(135deg, #3b82f6, #60a5fa)', // 蓝色
            'linear-gradient(135deg, #10b981, #34d399)', // 绿色
            'linear-gradient(135deg, #f59e0b, #fbbf24)', // 黄色
            'linear-gradient(135deg, #ef4444, #f87171)', // 红色
            'linear-gradient(135deg, #ec4899, #f472b6)', // 粉色
            'linear-gradient(135deg, #8b5cf6, #a78bfa)', // 紫罗兰
            'linear-gradient(135deg, #06b6d4, #22d3ee)', // 青色
        ];
        // 使用图标名称和URL生成一致的哈希值来选择颜色
        const seed = iconData.name && iconData.url ? 
            (iconData.name + iconData.url).split('').reduce((a, b) => ((a << 5) - a + b.charCodeAt(0)) | 0, 0) : 
            data.icons[currentTab].length;
        const gradientIndex = Math.abs(seed) % gradients.length;
        iconData.bgGradient = gradients[gradientIndex];
    }
    
    data.icons[currentTab].push(iconData);
    return true;
}

// 编辑图标
export function editIcon(data, tab, index, iconData) {
    if (data.icons[tab] && data.icons[tab][index]) {
        // 保留原有背景色，除非明确要更改
        if (!iconData.bgGradient && data.icons[tab][index].bgGradient) {
            iconData.bgGradient = data.icons[tab][index].bgGradient;
        }
        data.icons[tab][index] = iconData;
        return true;
    }
    return false;
}

// 删除图标
export function deleteIcon(data, tab, index) {
    if (data.icons[tab] && data.icons[tab][index]) {
        data.icons[tab].splice(index, 1);
        return true;
    }
    return false;
}

// 移动图标到其他标签页
export function moveIconToTab(data, iconIndex, fromTab, toTab) {
    if (!data.icons[fromTab] || !data.icons[toTab]) {
        console.error('无效的标签页:', fromTab, toTab);
        return false;
    }
    
    // 确保索引有效
    if (iconIndex >= 0 && iconIndex < data.icons[fromTab].length) {
        try {
            // 获取要移动的图标
            const icon = data.icons[fromTab][iconIndex];
            
            // 检查URL是否已存在于目标标签页
            const isDuplicate = data.icons[toTab].some(existingIcon => existingIcon.url === icon.url);
            
            if (isDuplicate) {
                showToast(`目标标签页"${toTab}"已包含此URL`);
                return false;
            }
            
            // 移除图标从源标签页并添加到目标标签页
            data.icons[fromTab].splice(iconIndex, 1);
            data.icons[toTab].push(icon);
            
            return true;
        } catch (error) {
            console.error('移动图标失败:', error);
            showToast('移动图标失败');
        }
    } else {
        console.error('无效的图标索引');
    }
    
    return false;
}

// 导出模块
export default {
    addIcon,
    editIcon,
    deleteIcon,
    moveIconToTab
};